package com.wk.springboot.annotation;

import org.springframework.cglib.proxy.Enhancer;

/**
 * description:创建CglibProxy的工厂
 * date 2020-12-05 19:55
 *
 * @author Administrator
 * @version 1.0
 */
public class CglibProxyFactory {

    public static <T> T getProxy(Class<? extends T> clazz) {


//        System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "D:\\code");

        //创建Enhancer对象，类似于JDK动态代理的Proxy类，下一步就是设置几个参数
        Enhancer enhancer = new Enhancer();
        //设置目标类的字节码文件
        enhancer.setSuperclass(clazz);
        //设置回调函数
        enhancer.setCallback(new CglibProxy());

        //这里的creat方法就是正式创建代理类
        T proxy = (T) enhancer.create();
        return proxy;

    }
}
